<?php
declare (strict_types=1);
namespace app\course\model\agent\admin;

use app\common\model\BaseModel;
use app\admin\model\user\Account;
use think\model\relation\BelongsTo;

/**
 * 代理课程记录--后台管理
 */
class CourseAgentLog extends BaseModel
{
    /**
     * 表名
     *
     * @var string
     */
    protected $name = 'course_agent_log';

    /**
     * 定义字段类型
     * @var array
     */
    protected $type = [
        'id'                   => 'integer',
        'status'               => 'integer',
        'mhm_id'               => 'integer',
    ];

    /**
     * 设置自动写入时间
     * @var boolean
     */
    protected $autoWriteTimestamp = true;

    /**
     * 时间显示格式
     * @var string
     */
    protected $dateFormat = 'Y-m-d H:i';

    /**
     * 定义表主键
     * @var string
     */
    protected $pk = 'id';

    /**
     * 全局查询范围
     * @var [type]
     */
    protected $globalScope = ['mhm'];

    /**
     * 限制机构条件
     *
     * @param $query
     * @return void
     */
    public function scopeMhm($query)
    {
        // 如果不是平台时, 加入机构条件限制
        if (!request()->is_platform) {
            $query->where('mhm_id', request()->mhm_id);
        }
    }

    /**
     * 获取类型显示文字
     *
     * @param $value
     * @param $data
     * @return string
     */
    protected function getStatusTextAttr($value = '', $data): string
    {
        $text = [
            0 => '取消代理',
            1 => '代理',
        ];

        return $text[$data['status']];
    }

    /**
     * 获取类型显示文字
     *
     * @param $value
     * @param $data
     * @return string
     */
    protected function getCourseTypeTextAttr($value = '', $data): string
    {
        $text = [
            1 => '点播',
            2 => '直播',
            3 => '直播',
            4 => '班级',
        ];

        return $text[$data['course_type']];
    }

    /**
     * 新增数据事件
     * Author   Martinsun<syh@sunyonghong.com>
     * Date 2020-03-14
     * @return   string
     */
    public static function onBeforeInsert($course)
    {
        $course->admin_user_id = request()->admin_user_id;
    }

    /**
     * 关联的用户名
     *
     * @return BelongsTo
     */
    public function userName(): BelongsTo
    {
        return $this->belongsTo(Account::class, 'admin_user_id')->removeOption('soft_delete')->removeWhereField('mhm_id')->bind(['user_name']);
    }
}
